package com.dfbz.demo06_泛型的上下边界;

import java.util.ArrayList;
import java.util.List;

/**
 * @author lscl
 * @version 1.0
 * @intro:
 */
public class Demo01 {
    public static void main(String[] args) {
        List<A> list1 = new ArrayList();
        List<B> list2 = new ArrayList();
        List<C> list3 = new ArrayList();
        List<Object> list4 = new ArrayList();

//        method1(list1);
//        method1(list2);
//        method1(list3);
//        method1(list4);

        method2(list1);
        method2(list2);
//        method2(list3);
        method2(list4);

    }

    public static void method1(List<? extends B> list) {

        // 上边界的好处: 可以使用上边界的对象
        for (B b : list) {
            System.out.println(b);
        }

    }

    public static void method2(List<? super B> list) {

        // 下边界则必须使用Object来接收
        for (Object obj : list) {
            System.out.println(obj);
        }
    }

}

class A {
}

class B extends A {
}

class C extends B {
}
